package model;

import java.util.ArrayList;
import java.util.List;
import java.util.Observer;

import javax.naming.OperationNotSupportedException;

import model.rentals.Rental;
import model.shelves.NormalShelf;
import model.shelves.Shelves;
import model.shelves.criteria.ICriterion;

public class ShelvesFacade extends Shelves implements IShelvesFacade {

	
	public ShelvesFacade(NormalShelf myRentals) {
		super(myRentals);
	}

	@Override
	public boolean addNormalShelf(String name) {
		return super.addNormalShelf(name);
	}

	@Override
	public boolean addSmartShelf(String name, ICriterion criteria) {
		return super.addSmartShelf(name, criteria);
	}

	@Override
	public void removeShelf(String name) {
		super.removeShelf(name);
	}

	@Override
	public Iterable<String> getShelves() {
		return (Iterable<String>) super.iterator() ;
	}

	@Override
	public boolean addRental(EMedium rental) {
		return super.addRental((Rental) rental);
	}

	@Override
	public void returnRental(EMedium rental) {
		super.getRentals().equals(rental)
	}

	@Override
	public boolean addShelfRental(String shelfName, EMedium rental)
			throws OperationNotSupportedException {
		return super.addRentalToShelf(shelfName, (Rental) rental);
	}

	@Override
	public void removeRental(String selfName, EMedium rental)
			throws OperationNotSupportedException {
		super.removeRentalFromShelf(selfName, (Rental) rental); 
	}

	@Override
	public Iterable<EMedium> getRentals() {
		
		return ;
	}

	@Override
	public Iterable<EMedium> getShelfRentals(String shelfName) {
		// TODO Auto-generated method stub
		return super.getShelfRentals(shelfName);
	}

	@Override
	public boolean isRented(EMedium rental) {
		return super.isRented((Rental) rental);
	}

	@Override
	public boolean isRentalExpired(EMedium rental) {
		return super.isExpired((Rental) rental);
	}

	@Override
	public void addShelfCollectionObserver(Observer observer) {
		super.addShelfCollectionObserver(observer);
	}

	@Override
	public void removeShelfCollectionObserver(Observer observer) {
		super.removeShelfCollectionObserver(observer);
	}

	@Override
	public void addRentalCollectioObserver(String shelfName, Observer observer) {
		super.addRentalCollectionObserver(shelfName, observer);
	}

	@Override
	public void removeRentalCollectionObserver(String shelfName,
			Observer observer) {
		super.removeRentalCollectionObserver(shelfName, observer);
	}

}
